]> git.r.bdr.sh - rbdr/Flat-Bezel.qsplugin/blobdiff - Flat Bezel/FlatBezelCollectingSearchObjectView.swift
Port more files to swift
[rbdr/Flat-Bezel.qsplugin] / Flat Bezel / FlatBezelCollectingSearchObjectView.swift
diff --git a/Flat Bezel/FlatBezelCollectingSearchObjectView.swift b/Flat Bezel/FlatBezelCollectingSearchObjectView.swift
new file mode 100644 (file)
index 0000000..26586be
--- /dev/null
@@ -0,0 +1,38 @@
+class FlatBezelCollectingSearchObjectView: QSCollectingSearchObjectView {
+  override static var cellClass : AnyClass? {
+      get { return BBObjectCell.self }
+      set { super.cellClass = newValue }
+  }
+  
+  override func draw(_ rect: NSRect) {
+    var frame = frame
+    
+    // These properties aren't available to Swift, so they need to be accessed in this way.
+    let collection = (value(forKey: "collection") as! NSMutableArray)
+    let collecting = (value(forKey: "collecting") as! Bool)
+    
+    let count = collection.count
+    if self.currentEditor() == nil && count != 0 {
+      frame.origin = NSZeroPoint
+      cell?.draw(withFrame: frame, in: self)
+      let iconSize = collectionSpace() != 0 ? collectionSpace() : 16
+      let opacity = collecting ? 1.0 : 0.75
+      let totalWidth = iconSize + 2
+      for i in 0..<count {
+        let object = collection.object(at: i) as! QSObject
+        var icon = object.icon()
+        let size = NSMakeSize(16, 16)
+        icon?.size = size
+        let inRect = NSMakeRect(
+          frame.size.width - totalWidth * CGFloat(count - i),
+          frame.origin.y + 2,
+          iconSize,
+          iconSize
+        )
+        icon?.draw(in: inRect, from: rectFromSize(size), operation: .sourceOver, fraction: opacity)
+      }
+    } else {
+      super.draw(rect)
+    }
+  }
+}